import string
import random
import time
from core.common import get_module_functions
from faker import Faker


_faker = Faker('zh-CN')


def faker_name():
    """
    模拟人姓名数据
    """
    return _faker.name()


def faker_phone():
    """
    模拟收集号码数据
    """
    return _faker.phone_number()


def faker_area_code():
    """
    模拟电话区号
    """
    return _faker.phonenumber_prefix()


def faker_company():
    """
    模拟公司名称数据
    """
    return _faker.company()


def faker_address():
    """
    模拟地址数据
    """
    return _faker.address()


def faker_street():
    """
    模拟街道数据
    """
    return _faker.street_address()


def faker_text(max_nb_chars=200):
    """
    模拟文本数据
    """
    return _faker.text(max_nb_chars=max_nb_chars)


def faker_words():
    """
    模拟几个词数据
    :return: list
    """
    return _faker.words()


def faker_province():
    """
    模拟省数据
    :return:
    """
    return _faker.province()


def faker_city():
    """
    模拟生成市，县
    :return:
    """
    return _faker.city()


def faker_district():
    """
    模拟生成市，县
    :return:
    """
    return _faker.district()


def faker_code(length=18):
    """
    返回字母数字18位字符串
    """
    return ''.join(random.choices(string.digits + string.ascii_letters, k=length))


def faker_post_code():
    """
    生成邮政编码
    """
    return _faker.postcode()


FAKER_FUNC_MAP = get_module_functions('core.faker')
FAKER_FUNC_MAP.pop('get_module_functions')


FAKER_FUNC_DOC = {key: [new_str.strip() for new_str in value.__doc__.strip().split('\n')]
                  for key, value in FAKER_FUNC_MAP.items()}

FAKER_FUNC_LIST = [{"id": func_name, "name": func_name}
                   for func_name in FAKER_FUNC_MAP.keys()]





